在學習 Verilog 時,授課老師通常會要求學生將撰寫完畢的 Verilog 程式碼編譯並燒錄到 FPGA 板子上,也因此很多人對於 FPGA 的瞭解僅此而已。而 ASIC 可能完全沒有聽說過!
FPGA (Field Programmable Gate Array),翻成中文是 現場可程式化閘陣列 。我們可以這樣比喻,FPGA 是一箱綜合的樂高積木,裡面包含各種小零件,包含長方型積木、圓柱形積木等,而我們可以根據當天的需求來使用對應的零件,假設隔天我們需要另一種需求,這些積木可以重新被組裝成另一種樣貌。
另一種積體電路叫做 ASIC (Application Specific Integrated Circuit),中文是 特殊應用積體電路 。我們可以將他比喻為已經設定主題的樂高積木,例如,星際大戰戰艦的樂高。這種積木沒有辦法去拼裝成任何我們想要的成品,因此我們必須在選購時就確定成品的樣貌。
這個比喻不知道有沒有讓大家清楚 FPGA 的用途?關鍵是 FPGA 是可以重新被燒錄的,如果我們每實作一個電路就要製成一個 ASIC ,可想而知這有多麻煩。再加上初學者很難在第一次就完全寫對 Verilog 程式碼,透過 FPGA 我們可以驗證電路是否正確,如果錯誤可以在修正後重新燒錄。
FPGA 之所以能做到重新設定功能,是因為其使用的邏輯閘是可重新配置、重新設定的,並搭配積體電路的布圖規劃,確保運算資源可彈性地重複使用。雖然 FPGA 很彈性,但是他其實相對 ASIC 昂貴不少。
FPGA 的出現使的 IC 設計不再是大家遙不可及的事情,我們已經可以透過 FPGA 板搭配硬體描述語言來實作電路,並入門 IC 設計。當然,IC 設計並不是那麼簡單的,學會使用 FPGA 和撰寫硬體描述語言只是基本功中的基本。
ASIC 是一類型的晶片,一旦他被實作出來,不可能再被更改為其他功能,也因為這類型的晶片可以百分之百貢獻給特定功能,他的速度相對於 FPGA 高出許多,價格也相對低。不過,ASIC 在正式製成晶片之前,需要經過很嚴謹的驗證和測試,確保完全沒有問題才可製造。
ASIC 其實很常被使用,舉例來說,在車牌辨識系統中,我們需要很迅速地得到結果,有時系統中會置入一個車牌辨識的晶片,而這種晶片就是一種 ASIC ,因為他有一個特定功能。另一個例子是加解密晶片(橢圓曲線加密),這個加密演算法很難被破解,因此就算我們有相對應的密鑰,加解密也不是立即就可以得到結果的,所以加解密晶片有它存在的必要。
https://www.gigabyte.com/tw/Glossary/fpga
https://ithelp.ithome.com.tw/articles/10196424